package sample.tools;

/**
 * 根据经纬度计算两点间的距离距离
 * 作者：w on 2021-08-16.
 * 邮箱：y141111@126.com
 * 版本：v1.0
 */
public class LongLatCalculationDistance {
    /**
     * 根据经纬度计算两点间的距离距离
     * @param long1 经度1
     * @param lat1  纬度1
     * @param long2 经度2
     * @param lat2  纬度2
     * @return double 距离，单位是 米
     */
    public static double findDistance(double long1, double lat1, double long2, double lat2) {
        // 地球半径的平均值，
        final double R = 6371393;
        lat1 = lat1 * Math.PI / 180.0;
        lat2 = lat2 * Math.PI / 180.0;
        double a = lat1 - lat2;
        double b = (long1 - long2) * Math.PI / 180.0;
        double sa2 = Math.sin(a / 2.0);
        double sb2 = Math.sin(b / 2.0);
        return 2 * R * Math.asin( Math.sqrt(   sa2 * sa2 + Math.cos(lat1) * Math.cos(lat2) * sb2 * sb2   ) );
    }
}


